1. Field of the Invention
This invention pertains in general to storage devices for computer systems and pertains in particular to software tools for accessing hard disk drives and other types of media.
2. Background Art
Modern computer systems, such as personal computer systems, typically include a large persistent storage device, such as a hard disk drive (“hard drive”). A typical hard drive might hold, for example, 120 or 200 gigabytes (GB) of data. The hard drive is often formatted into one or more logical divisions called “partitions.” For example, a 120 GB hard drive can be logically divided into two 60 GB partitions. Each partition can hold executable files and other data utilized in the operation of the computer system.
An operating system is typically stored on the hard drive and executed by the computer system. The operating system controls the operation of the computer system and, as part of this task, controls access to the hard drive. Modern operating systems do not provide other applications executing on the computer system with direct access to the hard drive. Instead, the applications must use an application programming interface (API) provided by the operating system to perform tasks such as accessing files.
Among other things, the API enforces a set of policies designed to protect the integrity of the data on the hard drive. Forcing application programs to use the API also allows the operating system to perform background tasks such as journaling, caching, and de-fragmenting the drive. However, the benefits produced by enforcing disk access through the API come at the expense of power and flexibility. Applications executing on the computer system may be prevented by the API from obtaining exclusive access to the disk or modifying files protected by the operating system, and thereby prevented from performing legitimate tasks.
One technique for avoiding the limitations imposed by the API is to perform the tasks on the hard drive before the operating system enforces the access policies. For example, MICROSOFT WINDOWS-based operating systems provide a facility for performing certain file read/write operations at an early stage in a computer's boot process. In this manner, an application can alter files that are locked once the operating system is fully booted.
Another way to avoid the limitations imposed by the API is to boot the computer with another operating system that allows the tasks to be performed. One technique for accomplishing this is to insert a floppy disk containing a different operating system, such as DOS (the “Disk Operating System”) into a floppy drive on the computer system and boot the floppy disk's operating system instead of the operating system stored on the hard drive. Once the computer boots to DOS, a DOS-based application program can freely access the hard drive. However, this method is often inconvenient when the end user lacks a floppy disk or the computer system lacks a floppy disk drive. Another technique is to store a customized image of a bootable floppy disk on the hard drive, load the disk image into a logical drive stored in volatile memory (i.e., a RAM disk) and then cause the computer system to load and boot from the RAM disk. However, this solution can be problematic because it requires significant alteration of the normal computer boot process. Plus, applications executing on the computer system can inadvertently disable the boot process or overwrite the memory locations holding the disk image.
Accordingly, there is a need in the art for a way to perform tasks on a storage device of a computer system that are not permitted by the computer system's normal operating system. Preferably, a solution meeting this need will not require the end user to use a floppy disk, require the computer to have a floppy disk drive, or make extensive and vulnerable alterations to the computer system or storage device.